home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 041-050 / amok48 / module / txt / newinout.def < prev    next >
Text File  |  1993-11-04  |  7KB  |  173 lines

  1. (**********************************************************************
  2.  
  3. :Program.    NewInOut.def
  4. :Contens.    Ein Bibliotheksmodul für gepufferte Ein- und Ausgabe.
  5. :Contens.    Kompatibel zu InOut.
  6. :Author.     Bernd Braun
  7. :Address.    Lippestr. 11, D-3300 Braunschweig
  8. :Phone.      0531/845498
  9. :Copyright.  Public Domain
  10. :Language.   Modula-2
  11. :Translator. M2Amiga A+L V3.3d
  12. :Support.    Tooltype-Übergabe nach Amiga 12/89 S.86f. Andreas Görtler.
  13. :History.    V1.0 25.Sep.1989 Erste lauffähige Version
  14. :History.    V1.1 26.Apr.1990 Kosmetische Verbesserungen
  15. :History.    V1.2 26.Sep.1990 Tooltypeübergabe implementiert
  16.  
  17. ***********************************************************************)
  18.  
  19. DEFINITION MODULE NewInOut;
  20.  
  21.    IMPORT ASCII;
  22.  
  23.    TYPE
  24.       FILE;
  25.       (* opaker Datentyp zur Unterstützung beliebiger DOS-Files. *)
  26.       Modus = ( ModeOld, ModeNew );
  27.       (* File-Modus für Open.
  28.          ModeOld: Eröffnen eines alten Files zum Lesen. Besteht es
  29.                   schon wird es überschrieben.
  30.          ModeNew: Eröffnen eines neuen Files zum Lesen und Schreiben. *)
  31.  
  32.    CONST
  33.       eol = ASCII.eol;
  34.  
  35.    VAR
  36.       done            : BOOLEAN;
  37.       (* TRUE, wenn letzte Operation erfolgreich. FALSE, sonst. *)
  38.       stdin, stdout   : FILE;
  39.       (* Standart Ein- und Ausgabe-Files. *)
  40.       waitCloseGadget : BOOLEAN;
  41.       (* Aus Kompatibilitatsgründen zum Modul Terminal. *)
  42.  
  43.    (* Öffnen eines beliebigen Amiga-DOS Files. *)
  44.    PROCEDURE Open ( Datei : ARRAY OF CHAR; modus : Modus ) : FILE;
  45.  
  46.    (* Öffnen eines neuen Ausgabefiles anstelle stdout. In Datei steht das
  47.       zu öffnende Amiga-DOS File. Ist Datei leer wird ein Filename per
  48.       Tastatur angefragt.
  49.       Änderung gegenüber InOut:
  50.          - In Datei darf keine Extention wie '.mod' stehen sondern der
  51.            Dateiname oder ein Leerstring.
  52.          - Der Dateiname kann vorher ggf. mit ReadString eingegeben
  53.            werden. *)
  54.    PROCEDURE OpenOutput ( Datei : ARRAY OF CHAR );
  55.  
  56.    (* Öffnen eines neuen Ausgabefiles anstelle stdin. In Datei steht das
  57.       zu öffnende Amiga-DOS File. Ist Datei leer wird ein Filename per
  58.       Tastatur angefragt.
  59.       Änderung gegenüber InOut:
  60.          - In Datei darf keine Extention wie '.mod' stehen sondern der
  61.            Dateiname oder ein Leerstring.
  62.          - Der Dateiname kann vorher ggf. mit ReadString eingegeben
  63.            werden. *)
  64.    PROCEDURE OpenInput ( Datei : ARRAY OF CHAR );
  65.  
  66.    (* Schließen eines geöffneten Files. *)
  67.    PROCEDURE Close ( file : FILE );
  68.  
  69.    (* Schließen eines geöffneten Ausgabefiles und Wiedereinsetzen von
  70.       stdout. *)
  71.    PROCEDURE CloseOutput;
  72.  
  73.    (* Schließen eines geöffneten Eingabefiles und Wiedereinsetzen von
  74.       stdin. *)
  75.    PROCEDURE CloseInput;
  76.  
  77.    (* Rückgabe eines Zeichens aus stdin mit Hilfe von ReadFile. *)
  78.    PROCEDURE Read ( VAR c : CHAR );
  79.  
  80.    (* Schreiben eines Zeichens in stdout mit Hilfe von WriteFile. *)
  81.    PROCEDURE Write ( c : CHAR );
  82.  
  83.    (* Schreiben einer neuen Zeile in stdout mit Hilfe von WriteLnFile. *)
  84.    PROCEDURE WriteLn;
  85.  
  86.    (* Schreiben einer neuen Zeile in File mit Hilfe von WriteFile. *)
  87.    PROCEDURE WriteLnFile ( file : FILE );
  88.  
  89.    (* Rückgabe des ersten Zeichens im Eingabepuffer. Ist er leer werden
  90.       neue Zeichen aus file gelesen und im Eingabepuffer gespeichert. *)
  91.    PROCEDURE ReadFile ( file : FILE; VAR c : CHAR );
  92.  
  93.    (* Speichern eines Zeichens im Ausgabepuffer von file. Ist er voll
  94.       werden alle Zeichen im Ausgabepuffer in file geschrieben. *)
  95.    PROCEDURE WriteFile ( file : FILE; c : CHAR );
  96.  
  97.    (* Schreiben eines String in stdout mit Hilfe von WriteStringFile. *)
  98.    PROCEDURE WriteString ( Text : ARRAY OF CHAR );
  99.  
  100.    (* Schreiben eines Strings in file. *)
  101.    PROCEDURE WriteStringFile ( file : FILE; Text : ARRAY OF CHAR );
  102.  
  103.    (* Eingabe eines Strings aus file. *)
  104.    PROCEDURE ReadString ( VAR Text : ARRAY OF CHAR );
  105.  
  106.    (* Eingabe eines Strings aus stdin mit Hilfe von ReadStringFile. *)
  107.    PROCEDURE ReadStringFile ( file : FILE; VAR Text : ARRAY OF CHAR );
  108.  
  109.    (* Schreiben aller Zeichen im Output-Puffer in file. *)
  110.    PROCEDURE FlushOutput ( file : FILE );
  111.  
  112.    (* Eingabe eines Cardinal aus stdin mit Hilfe von ReadCardFile. *)
  113.    PROCEDURE ReadCard ( VAR Card : CARDINAL );
  114.  
  115.    (* Eingabe eines Cardinal aus file. *)
  116.    PROCEDURE ReadCardFile ( file : FILE; VAR Card : CARDINAL );
  117.  
  118.    (* Eingabe eines LongCardinal aus stdin mit Hilfe von ReadCardFile. *)
  119.    PROCEDURE ReadLongCard ( VAR Card : LONGCARD );
  120.  
  121.    (* Eingabe eines LongCardinal aus file. *)
  122.    PROCEDURE ReadLongCardFile ( file : FILE; VAR Card : LONGCARD );
  123.  
  124.    (* Eingabe eines Integer aus stdin mit Hilfe von ReadCardFile. *)
  125.    PROCEDURE ReadInt ( VAR Int : INTEGER );
  126.  
  127.    (* Eingabe eines Integer aus file. *)
  128.    PROCEDURE ReadIntFile ( file : FILE; VAR Int : INTEGER );
  129.  
  130.    (* Eingabe eines LongInteger aus stdin mit Hilfe von ReadCardFile. *)
  131.    PROCEDURE ReadLongInt ( VAR Int : LONGINT );
  132.  
  133.    (* Eingabe eines LongInteger aus file. *)
  134.    PROCEDURE ReadLongIntFile ( file : FILE; VAR Int : LONGINT );
  135.  
  136.    (* Schreiben eines Cardinal oder LongCardinal in stdout mit der
  137.       Feldbreite Feld mit Hilfe von WriteCardFile.
  138.       Ist Feld positiv rechtsbündig, bei negativ linksbündig.*)
  139.    PROCEDURE WriteCard ( Card : LONGCARD; Feld : INTEGER );
  140.  
  141.    (* Schreiben eines Cardinal oder LongCardinal in file mit der
  142.       Feldbreite Feld.
  143.       Ist Feld positiv rechtsbündig, bei negativ linksbündig.*)
  144.    PROCEDURE WriteCardFile ( file : FILE;
  145.                              Card : LONGCARD;
  146.                              Feld : INTEGER );
  147.  
  148.    (* Schreiben eines Integer oder LongInteger in stdout mit der
  149.       Feldbreite Feld mit Hilfe von WriteCardFile.
  150.       Ist Feld positiv rechtsbündig, bei negativ linksbündig.*)
  151.    PROCEDURE WriteInt ( Int : LONGINT; Feld : INTEGER );
  152.  
  153.    (* Schreiben eines Integer oder LongInteger in file mit der
  154.       Feldbreite Feld.
  155.       Ist Feld positiv rechtsbündig, bei negativ linksbündig.*)
  156.    PROCEDURE WriteIntFile ( file : FILE;
  157.                             Int  : LONGINT;
  158.                             Feld : INTEGER );
  159.  
  160.    (* Schreiben eines Cardinal oder LongCardinal als HexZahl in stdout
  161.       mit der Feldbreite Feld mit Hilfe von WriteHexFile.
  162.       Ist Feld positiv rechtsbündig, bei negativ linksbündig.*)
  163.    PROCEDURE WriteHex ( Hex : LONGCARD; Feld : INTEGER );
  164.  
  165.    (* Schreiben eines Cardinal oder LongCardinal als HexZahl in file mit
  166.       der Feldbreite Feld.
  167.       Ist Feld positiv rechtsbündig, bei negativ linksbündig.*)
  168.    PROCEDURE WriteHexFile ( file : FILE;
  169.                             Hex  : LONGCARD;
  170.                             Feld : INTEGER );
  171.  
  172. END NewInOut.
  173.